package compiler;

enum OPType {
    o_add, o_sub, o_mul, o_div, o_mod,
    o_gt, o_lt, o_eq, o_neq, o_gteq, o_lteq,
    o_not, o_ops, o_and, o_or, o_xor,
    o_band, o_bor, o_assign, o_zxkh, o_yxkh,
    o_zzkh, o_yzkh, o_zdkh, o_ydkh, o_point,
    o_comma, o_shr, o_shl,o_cast;

    static int GetLevel(OPType t) {
        switch (t) {
            case o_point:
                return 7;
            case o_not:
            case o_ops:
                return 6;
            case o_mod:
            case o_div:
            case o_mul:
                return 5;
            case o_add:
            case o_sub:
            case o_shr:
            case o_shl:
                return 4;
            case o_gt:
            case o_lt:
            case o_eq:
            case o_neq:
            case o_gteq:
            case o_lteq:
                return 3;
            case o_xor:
            case o_band:
            case o_bor:
                return 2;
            case o_and:
            case o_or:
                return 1;
            case o_assign:
                return 0;
        }
        return -1;
    }
};
